/* ========================================================================= */
/* ------------------------------------------------------------------------- */
/*!
  \file			pgprintmanager.h
  \date			Jul 2012
  \author		TNick

  \brief		Contains the definition for PrintManager class


*//*


 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Please read COPYING and README files in root folder
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
#ifndef __PGPRINTMANAGER_INC__
#define __PGPRINTMANAGER_INC__
//
//
//
//
/*  INCLUDES    ------------------------------------------------------------ */

#include	<cpg/cpg.h>
#include	<printing/printmanager.h>

/*  INCLUDES    ============================================================ */
//
//
//
//
/*  CLASS    --------------------------------------------------------------- */

namespace   cpg       {

/**
*	@brief	manages the knowledge about the printing
*
*	The manager is a singleton accesible using unique() that gets created on the
*	call to init() and is deleted in the call to end(). It's purpose is to keep
*	track of general printing matters at application level.
*
*	The most important feature is its list of printers. This list contains all
*	the printers that were ever referenced in this application and all
*	printers that exist in the system. A Printer that was added to this list
*	will only leave it (and will only be deleted) when the manager end()s its
*	life time (at application exit). As a consequence, the index in this
*	list is an identificator that remains unique troughout the session and may
*	be used to reference a particular printer. Files will, however, need to
*	explicitly store the printer, because a new instance of the manager will
*	have a different list.
*
*	The manager also stores the index of the currentPrinter(). Full list of
*	characteristics for this one can be retrieved with overloaded
*	currentPrinter(), but currentPrinterName() and currentPrinterType() also
*	exist for convenience.
*
*	Any other printer is available using printer() method and an index.
*	Use markUsable() and markObsolete() methods to mark the printer at a
*	certain index as usable or not. refreshList() will look at the list of
*	printers provided by the system and set these states automatically.
*
*	The class describing a Printer is fairly simple, only storing its name and
*	type:
*	- a printer reported by the underlying system
*	- one that was dissconected or was referenced by some drawing but was not found
*	- some build-in printers (pdf, image, post script).
*
*	\see \ref printing page for more information
*/
class CPGSHARED_EXPORT PrintManager	: public BBlocks::PrintManager			{
    BBM_TRACK( PrintManager );

	//
	//
	//
	//
	/*  DEFINITIONS    ----------------------------------------------------- */

	/*  DEFINITIONS    ===================================================== */
	//
	//
	//
	//
	/*  DATA    ------------------------------------------------------------ */

	/*  DATA    ============================================================ */
	//
	//
	//
	//
	/*  FUNCTIONS    ------------------------------------------------------- */

private:


	/**
	*	@brief	constructor;
	*/
    PrintManager			( void );


	/**
	*	@brief	destructor;
	*/
    ~PrintManager			( void );


	/*  FUNCTIONS    ======================================================= */
	//
	//
	//
	//

};	/*	class PrintManager	*/

/*  CLASS    =============================================================== */
//
//
//
//

}   //  namespace   cpg

#endif // __PGPRINTMANAGER_INC__
/* ------------------------------------------------------------------------- */
/* ========================================================================= */
